import axios from "axios"
import type { InternalAxiosRequestConfig, AxiosResponse } from "axios"

import { ElLoading } from 'element-plus'

const service = axios.create({
    baseURL: "http://118.178.238.19:3001", //西安
    // baseURL: "http://121.89.205.189:3000", //北京
})

// 定义一个loading
let loadingInstance: any

// 请求拦截器（Interceptors）
service.interceptors.request.use((config: InternalAxiosRequestConfig) => {

    // 给headers增加自定义属性token
    // config.headers.token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbm5hbWUiOiJhZG1pbiIsImlhdCI6MTY3NzMxNjYxMiwiZXhwIjoxNjc3MzQ1NDEyfQ._2YnS_1qr7J__ME2T0xe84iFYx3TizWHTkaFD0ayIX8"

    // 发送请求之前做什么
    let token = sessionStorage.getItem("token");
    // 如果有token
    if (token) {
        // 放在请求头（token跟后端沟通，他需要什么该成什么就可以了）
        config.headers.token = token
    }
    // 请求的时候显示loading
    loadingInstance = ElLoading.service({ fullscreen: true });
    return config
})

// 响应拦截器
service.interceptors.response.use((res: AxiosResponse) => {
    // 响应后关闭loading
    if (loadingInstance) {
        loadingInstance.close()
    }
    return res
});

// 开放
export default service